export function createStore(reducer) {
  let currentState;
  const listeners = [];

  /**
   * 返回redux管理所有的状态数据
   */
  function getState() {
    return currentState;
  }

  /**
   * 调用dispatch方法会触发reducer函数
   * @param {*} action函数
   */
  function dispatch(action) {
    // const newState = reducer(currentState, action);
    // currentState = newState;
    currentState = reducer(currentState, action);
    listeners.forEach((listener) => listener());
  }

  /**
   * 监听redux管理状态数据变化，一旦发生变化，就会执行listener
   * @param {*} listener函数
   */
  function subscribe(listener) {
    listeners.push(listener);
  }

  // 一上来redux数据需要一个初始化值
  dispatch({ type: "redux_sa2s315" });

  // 返回值是一个store对象
  return {
    getState,
    dispatch,
    subscribe,
  };
}
